Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Jun 13, 2025

Updates components to utilize getFileStream or getFileStreamAndMetadata

Summary by CodeRabbit

  • New Features

    • Many file upload and attachment actions now support both file URLs and local file paths, providing a more flexible file input experience across multiple integrations.
  • Bug Fixes

    • Improved handling of file streams and metadata for uploads, reducing errors and increasing compatibility with various file sources.
  • Refactor

    • Unified and simplified file input properties in actions, consolidating separate URL and file path fields into a single property for easier use.
    • Updated internal file handling to use asynchronous streaming, resulting in more efficient and reliable uploads.
    • Enhanced asynchronous processing in email preparation for Microsoft Outlook actions to ensure proper message body handling.
    • Streamlined file upload logic by removing redundant props and conditional branches in several actions.
    • Added utility functions to convert streams to buffers for improved file processing.
    • Simplified image and video upload flows by consistently using platform utilities for file streams and metadata.
  • Chores

    • Updated component and action versions, and refreshed dependencies for improved stability and compatibility.
    • Incremented package versions and updated platform dependency versions across multiple components.

@vercel
Copy link

vercel bot commented Jun 13, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

3 Skipped Deployments
Name Status Preview Comments Updated (UTC)
docs-v2 ⬜️ Ignored (Inspect) Visit Preview Jun 23, 2025 7:54pm
pipedream-docs ⬜️ Ignored (Inspect) Jun 23, 2025 7:54pm
pipedream-docs-redirect-do-not-edit ⬜️ Ignored (Inspect) Jun 23, 2025 7:54pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 13, 2025

Walkthrough

This update standardizes file input handling across numerous components by replacing manual file system and URL stream logic with new platform utilities such as getFileStream, getFileStreamAndMetadata, and helper functions like streamToBuffer. Many actions now accept either file URLs or local /tmp paths, consolidating previously separate props. Several version bumps and dependency updates are included, and redundant or legacy code is removed.

Changes

Files / Groups Change Summary
api4ai/actions/*/*.mjs Version string updated from "0.0.1" to "0.0.2" in all actions.
api4ai/api4ai.app.mjs Replaced complex file input logic with getFileStreamAndMetadata.
api4ai/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
dropbox/actions/upload-file/upload-file.mjs Unified file input prop (filePath), removed separate fileUrl/filePath, used getFileStream. Version bump.
dropbox/actions/upload-multiple-files/upload-multiple-files.mjs Unified to filesPaths array prop, used getFileStream, removed separate URL/path props. Version bump.
dropbox/package.json Bumped version to 1.0.0, added @pipedream/platform ^3.1.0.
elevenlabs/actions/add-voice/add-voice.mjs Switched to getFileStreamAndMetadata for file streaming. Version bump.
elevenlabs/package.json Bumped version to 0.4.1, updated @pipedream/platform to ^3.1.0.
jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs Unified file prop (file), used getFileStreamAndMetadata, removed manual fs logic. Version bump.
jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs Unified to files prop, used getFileStreamAndMetadata, removed manual fs logic. Version bump.
jira/package.json Bumped version to 0.2.1, updated @pipedream/platform to ^3.1.0.
microsoft_outlook/actions/*/*.mjs Mostly version bumps; reply-to-email and send-email now await async message body preparation.
microsoft_outlook/microsoft_outlook.app.mjs Replaced fs/base64 with getFileStream, added streamToBase64, made prepareMessageBody async.
microsoft_outlook/package.json Bumped version to 1.5.1, updated @pipedream/platform to ^3.1.0.
microsoft_outlook/sources/*/*.mjs Version bumps only.
speechace/actions/*/*.mjs Unified to file prop, used getFileStreamAndMetadata, removed manual fs logic. Version bumps.
speechace/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
speechace/speechace.app.mjs Updated audio file prop to allow URL or /tmp path, renamed filePath to file.
spotlightr/actions/create-video/create-video.mjs Unified to file prop, used getFileStreamAndMetadata, removed manual fs logic. Version bump.
spotlightr/package.json Bumped version to 1.0.0, updated @pipedream/platform to ^3.1.0.
supabase/actions/batch-insert-rows/batch-insert-rows.mjs Replaced fs read with getFileStream, added streamToUtf8 helper. Version bump.
supabase/package.json Bumped version to 0.3.2, updated @pipedream/platform to ^3.1.0.
syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs Used getFileStream and streamToBuffer for media, updated description, version bump.
syncmate_by_assitro/actions/send-message/send-message.mjs Used getFileStream and streamToBuffer for media, updated description, version bump.
syncmate_by_assitro/common/utils.mjs Added streamToBuffer utility.
syncmate_by_assitro/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
testmonitor/actions/create-test-result/create-test-result.mjs Used getFileStreamAndMetadata for attachments, updated description, version bump.
testmonitor/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs Used getFileStream and new streamToBuffer for attachments, updated description, version bump.
the_bookie/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
timetonic/actions/common/create-update-row.mjs Used getFileStreamAndMetadata for file uploads, made upload async.
timetonic/actions/create-row/create-row.mjs Version bump only.
timetonic/actions/update-row/update-row.mjs Version bump only.
timetonic/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
transifex/actions/download-file/download-file.mjs Version bump only.
transifex/actions/upload-file/upload-file.mjs Used getFileStream and new streamToBuffer for file upload, version bump.
transifex/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
transifex/sources/*/*.mjs Version bumps only.
transifex/transifex.app.mjs Updated file prop description to allow URL or /tmp path.
trello/actions/add-attachment-to-card/add-attachment-to-card.mjs Unified file prop, removed fileType/url, used getFileStreamAndMetadata, version bump.
trello/actions/create-card/create-card.mjs Unified file prop, removed fileType/urlSource, used getFileStreamAndMetadata, version bump.
trello/package.json Bumped version to 1.0.0, updated @pipedream/platform to ^3.1.0.
trust/actions/upload-video/upload-video.mjs Used getFileStreamAndMetadata for file upload, updated description, version bump.
trust/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
twitter/actions/upload-media/upload-media.ts Unified file prop (file), used getFileStreamAndMetadata, removed manual fs/axios logic, version bump.
twitter/package.json Bumped version to 2.3.1, updated @pipedream/platform to ^3.1.0.
twitter/twitter.app.mjs Removed the entire file (Twitter app definition).
vapi/actions/upload-file/upload-file.mjs Used getFileStreamAndMetadata for file upload, version bump.
vapi/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
what_are_those/actions/find-sneakers-by-sku/find-sneakers-by-sku.mjs Used getFileStream and streamToBuffer for image, updated description, version bump.
what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs Used getFileStreamAndMetadata for all images, updated descriptions, version bump.
what_are_those/actions/identify-sneakers-from-photo/identify-sneakers-from-photo.mjs Used getFileStreamAndMetadata for image, updated description, version bump.
what_are_those/common/utils.mjs Added streamToBuffer utility.
what_are_those/package.json Bumped version to 0.1.1, updated @pipedream/platform to ^3.1.0.
whatsapp_business/actions/send-voice-message/send-voice-message.mjs Unified to file prop, used getFileStreamAndMetadata, removed manual fs logic, version bump.
whatsapp_business/package.json Bumped version to 0.0.11, updated @pipedream/platform to ^3.1.0.
wordpress_org/actions/upload-media/upload-media.mjs Used getFileStream for file upload, unified to file prop, updated description, version bump.
wordpress_org/package.json Bumped version to 0.4.1, added @pipedream/platform ^3.1.0.
youtube_data_api/actions/upload-channel-banner/common.mjs Unified file handling to getFileStream, removed separate URL/path logic.
youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs Unified to file prop, removed separate URL/path props, version bump.
youtube_data_api/actions/upload-thumbnail/common.mjs Unified file handling to getFileStream, removed separate URL/path logic.
youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs Unified to file prop, removed separate URL/path props, version bump.
youtube_data_api/actions/upload-video/common.mjs Unified file handling to getFileStream, removed separate URL/path logic.
youtube_data_api/actions/upload-video/upload-video.mjs Unified to file prop, removed separate URL/path props, version bump.
youtube_data_api/package.json Bumped version to 1.0.0, updated @pipedream/platform to ^3.1.0.
zoho_workdrive/actions/upload-file/upload-file.mjs Used getFileStreamAndMetadata for file upload, updated description.
zoho_workdrive/package.json Bumped version to 0.2.3, updated @pipedream/platform to ^3.1.0.
google_drive/actions/upload-file/upload-file.mjs Changed filePath prop to inline string with label and description, version bump.
google_drive/package.json Bumped version to 1.0.1.
testmonitor/actions/find-issue/find-issue.mjs Version bump only.
testmonitor/actions/find-project/find-project.mjs Version bump only.
testmonitor/actions/find-test-result/find-test-result.mjs Version bump only.
testmonitor/sources/new-issue/new-issue.mjs Version bump only.
testmonitor/sources/new-test-result/new-test-result.mjs Version bump only.
testmonitor/testmonitor.app.mjs Added getTestRunsForTestCase method; updated testRunId options to conditionally fetch by testCaseId.
api4ai/actions/alcohol-label-recognition/alcohol-label-recognition.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/background-removal/background-removal.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/brand-recognition/brand-recognition.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/car-image-background-removal/car-image-background-removal.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/furniture-and-household-item-recognition/furniture-and-household-item-recognition.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/image-anonymization/image-anonymization.mjs Version updated from "0.0.1" to "0.0.2".
api4ai/actions/nsfw-image-recognition/nsfw-image-recognition.mjs Version updated from "0.0.1" to "0.0.2".
microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs Version updated from "0.0.6" to "0.0.7".
microsoft_outlook/actions/approve-workflow/approve-workflow.mjs Version updated from "0.0.4" to "0.0.5".
microsoft_outlook/actions/create-contact/create-contact.mjs Version updated from "0.0.13" to "0.0.14".
microsoft_outlook/actions/create-draft-email/create-draft-email.mjs Version updated from "0.0.13" to "0.0.14".
microsoft_outlook/actions/download-attachment/download-attachment.mjs Version updated from "0.0.1" to "0.0.2".
microsoft_outlook/actions/find-contacts/find-contacts.mjs Version updated from "0.0.13" to "0.0.14".
microsoft_outlook/actions/find-email/find-email.mjs Version updated from "0.0.4" to "0.0.5".
microsoft_outlook/actions/list-contacts/list-contacts.mjs Version updated from "0.0.13" to "0.0.14".
microsoft_outlook/actions/list-folders/list-folders.mjs Version updated from "0.0.4" to "0.0.5".
microsoft_outlook/actions/list-labels/list-labels.mjs Version updated from "0.0.6" to "0.0.7".
microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs Version updated from "0.0.4" to "0.0.5".
microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs Version updated from "0.0.6" to "0.0.7".
microsoft_outlook/actions/reply-to-email/reply-to-email.mjs Version updated from "0.0.3" to "0.0.4".
microsoft_outlook/actions/send-email/send-email.mjs Version updated from "0.0.14" to "0.0.15".
microsoft_outlook/actions/update-contact/update-contact.mjs Version updated from "0.0.13" to "0.0.14".
microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs Version updated from "0.0.1" to "0.0.2".
microsoft_outlook/sources/new-contact/new-contact.mjs Version updated from "0.0.14" to "0.0.15".
microsoft_outlook/sources/new-email/new-email.mjs Version updated from "0.0.17" to "0.0.18".
speechace/actions/score-scripted-recording/score-scripted-recording.mjs Version updated from "0.0.1" to "0.0.2".
speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs Version updated from "0.0.1" to "0.0.2".
spotlightr/actions/create-video/create-video.mjs Version updated from "0.0.1" to "1.0.0".
syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs Version updated from "0.0.1" to "0.0.2".
syncmate_by_assitro/actions/send-message/send-message.mjs Version updated from "0.0.1" to "0.0.2".
testmonitor/actions/create-test-result/create-test-result.mjs Version updated from "0.0.1" to "0.0.2".
the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs Version updated from "0.0.1" to "0.0.2".
timetonic/actions/create-row/create-row.mjs Version updated from "0.0.1" to "0.0.2".
timetonic/actions/update-row/update-row.mjs Version updated from "0.0.1" to "0.0.2".
transifex/actions/upload-file/upload-file.mjs Version updated from "0.0.1" to "0.0.2".
transifex/sources/new-localization-activity-completed-instant/new-localization-activity-completed-instant.mjs Version updated from "0.0.1" to "0.0.2".
transifex/sources/new-task-for-set-of-strings-instant/new-task-for-set-of-strings-instant.mjs Version updated from "0.0.1" to "0.0.2".
youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs Version updated from "0.0.4" to "1.0.0".
youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs Version updated from "0.0.3" to "1.0.0".
youtube_data_api/actions/upload-video/upload-video.mjs Version updated from "0.0.7" to "1.0.0".
whatsapp_business/actions/send-voice-message/send-voice-message.mjs Version updated from "0.0.1" to "0.0.2".
wordpress_org/actions/upload-media/upload-media.mjs Version updated from "0.0.1" to "0.0.2".

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Action
    participant PlatformUtils as Platform Utilities

    User->>Action: Provide file input (URL or /tmp path)
    Action->>PlatformUtils: getFileStream or getFileStreamAndMetadata(file)
    PlatformUtils-->>Action: Returns stream (+ metadata)
    Action->>Action: (Optional) Convert stream to Buffer/Base64
    Action->>API: Upload file using stream/buffer/metadata
    API-->>Action: Response
    Action-->>User: Result
Loading

Poem

Oh, what a hop—what a leap in the code!
Now files from URLs or /tmp can be flowed.
Streams and buffers, all handled with care,
No more fs tangles, no need to beware!
🐇✨ With unified props, the actions all cheer—
This bunny loves upgrades—let’s give a big ear!


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@michelle0927 michelle0927 self-assigned this Jun 13, 2025
@michelle0927 michelle0927 marked this pull request as ready for review June 13, 2025 19:41
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

🔭 Outside diff range comments (7)
components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs (1)

61-67: ⚠️ Potential issue

Missing await – this spreads a Promise instead of the prepared message body

prepareMessageBody was converted to an async function in the app module.
Without await, the spread operator will inject the unresolved Promise object into the payload, producing an invalid Graph request.

-        ...this.microsoftOutlook.prepareMessageBody(this),
+        ...await this.microsoftOutlook.prepareMessageBody(this),
components/syncmate_by_assitro/actions/send-message/send-message.mjs (1)

29-34: ⚠️ Potential issue

fileName should be mandatory when media is supplied

file_name is sent to the SyncMate API unconditionally, but the prop itself is optional.
Enforce it to avoid silent undefined values or HTTP-400s from the upstream API.

-    fileName: {
+    fileName: {
       type: "string",
       label: "File Name",
       description: "The name of the file.",
-      optional: true,
+      optional: false,
+      when: (c) => Boolean(c.media),
     },

Alternatively, throw a ConfigurationError when this.media && !this.fileName.

Also applies to: 44-55

components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)

50-53: 🛠️ Refactor suggestion

Leverage form.getHeaders() instead of private _boundary

_boundary is an internal field; prefer the public API.

-      const headers = {
-        "Content-Type": `multipart/form-data; boundary=${data._boundary}`,
-        "X-Atlassian-Token": "no-check",
-      };
+      const headers = {
+        ...data.getHeaders(),
+        "X-Atlassian-Token": "no-check",
+      };
components/testmonitor/actions/create-test-result/create-test-result.mjs (1)

128-130: ⚠️ Potential issue

Possible crash when e.response is undefined

If the request fails before a response is produced (e.g. network error), e.response is undefined, leading to TypeError: Cannot read properties of undefined. Guard against it before accessing nested fields.

-      throw new ConfigurationError((e.response.status === 400)
-        ? "It seems that there is already a test with this configuration!"
-        : e.response.data.message);
+      const message = e?.response?.status === 400
+        ? "It seems that there is already a test with this configuration!"
+        : e?.response?.data?.message || e.message;
+      throw new ConfigurationError(message);
components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (1)

61-61: ⚠️ Potential issue

Update $summary to use the new prop name

this.filePath no longer exists – it was renamed to file. Referencing the old prop will throw at runtime and break the export summary.

-$.export("$summary", `Transcription and scoring completed for audio file: ${this.filePath}`);
+$.export("$summary", `Transcription and scoring completed for audio file: ${this.file}`);
components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs (1)

69-69: ⚠️ Potential issue

Fix stale variable in $summary

this.filePath was removed. Use this.file instead:

-$.export("$summary", `Scored scripted recording for audio file: ${this.filePath}`);
+$.export("$summary", `Scored scripted recording for audio file: ${this.file}`);
components/api4ai/api4ai.app.mjs (1)

41-45: ⚠️ Potential issue

Content-Type header missing multipart boundary

Manually setting "multipart/form-data" omits the boundary parameter required by most servers. Let FormData generate the correct header:

- const headers = {
-   "Content-Type": "multipart/form-data",
-   "X-RapidAPI-Key": this.$auth.api_key,
-   "A4A-CLIENT-USER-ID": "pipedream.com",
- };
+ const headers = {
+   ...form.getHeaders(),          // includes boundary
+   "X-RapidAPI-Key": this.$auth.api_key,
+   "A4A-CLIENT-USER-ID": "pipedream.com",
+ };
🧹 Nitpick comments (51)
components/syncmate_by_assitro/package.json (1)

3-3: Ensure version bump is documented.
You've updated the component version from 0.1.0 to 0.1.1. Please verify that this change is reflected in your CHANGELOG or release notes and that any CI/CD tagging or publishing workflows are updated accordingly.

components/jira/package.json (1)

3-3: Patch version bump
Bumped the package version to 0.2.1. Ensure the CHANGELOG.md or release notes are updated to reflect this patch release.

components/whatsapp_business/package.json (1)

3-3: Verify version bump and update changelog
The package version has been updated to 0.0.11. Please ensure that your CHANGELOG.md (or release notes) reflects this bump and that any CI/CD or publishing workflows are aligned with the new version.

components/spotlightr/package.json (1)

3-3: Bump patch version: confirm release notes and documentation updates.

The version has been updated to 0.1.1—please ensure the CHANGELOG or release notes (and any README references) reflect this new patch release.

components/transifex/package.json (1)

3-3: Patch version bump to 0.1.1 approved.
Consider adding a corresponding entry in CHANGELOG.md or release notes for this patch release.

components/trust/package.json (1)

3-3: Review version bump for semantic appropriateness
This change delivers new file‐stream and metadata handling features—consider whether a minor version bump (e.g. 0.2.0) is more appropriate than a patch, and update CHANGELOG.md accordingly.

-  "version": "0.1.1",
+  "version": "0.2.0",
components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (2)

44-45: Typo & misleading example in prop description

"myFlie.pdf" contains a typo and references a PDF whereas this action expects a CSV.

- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+ description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.csv).",

71-81: Potential memory issue when ingesting large CSVs

streamToUtf8 buffers the entire file in RAM. For sizeable datasets this can OOM the worker. A streaming CSV parser (e.g. csv-parse in non-sync mode or fast-csv) would avoid that.

Not blocking for parity with previous sync implementation, but worth tracking.

components/syncmate_by_assitro/common/utils.mjs (1)

8-16: Consider memory-safe stream consumption

streamToBuffer concatenates all chunks in memory, which is fine for small/medium files but risks OOM crashes when large uploads are processed.
If the consumer can work with streams, prefer piping/streaming rather than buffering the entire payload, or at minimum guard with a size limit.

-    stream.on("end", () => resolve(Buffer.concat(chunks)));
+    stream.on("end", () => {
+      /* Abort if >50 MB to avoid memory pressure */
+      const buf = Buffer.concat(chunks);
+      if (buf.length > 50 * 1024 * 1024) {
+        return reject(new Error("File too large to buffer safely"));
+      }
+      resolve(buf);
+    });

Also, consider removing the event listeners after they fire (stream.off(...)) to avoid potential leaks.

components/trust/actions/upload-video/upload-video.mjs (1)

22-23: Minor typo in prop description

/tmp/myFlie.pdf/tmp/myFile.pdf.

components/spotlightr/actions/create-video/create-video.mjs (1)

16-17: Typo in prop description

/tmp/myFlie.pdf/tmp/myFile.pdf.

components/what_are_those/common/utils.mjs (1)

8-16: Optional: protect against unbounded memory usage in streamToBuffer

For very large files this helper will buffer the entire stream in memory.
Consider supporting a max-size guard or switching callers that only need Base64 to a streaming encoder.

 export const streamToBuffer = (stream, maxBytes = Infinity) => {
   return new Promise((resolve, reject) => {
     const chunks = [];
     let total = 0;

-    stream.on("data", (chunk) => chunks.push(chunk));
+    stream.on("data", (chunk) => {
+      total += chunk.length;
+      if (total > maxBytes) {
+        stream.destroy();
+        return reject(new Error("Stream exceeds maximum allowed size"));
+      }
+      chunks.push(chunk);
+    });
components/transifex/transifex.app.mjs (1)

8-11: Typo in example path

/tmp/myFlie.pdf/tmp/myFile.pdf

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).",
components/youtube_data_api/actions/upload-thumbnail/common.mjs (1)

1-6: Stream acquisition looks fine, but surface errors from getFileStream

getFileStream can throw (e.g., unreachable URL, missing /tmp path). Consider wrapping it so the thrown error is surfaced with a clearer action-level message or adding an inline comment that the platform already surfaces it.

components/youtube_data_api/actions/upload-channel-banner/common.mjs (1)

1-6: Same note on error surfacing as for thumbnail upload – optional, no blockers.

components/vapi/actions/upload-file/upload-file.mjs (1)

16-17: Broaden prop description to reflect new URL support

getFileStreamAndMetadata transparently handles both URLs and /tmp paths, but the description only mentions the latter. This can mislead users.

- description: "The path to the file saved to the `/tmp` directory (e.g. `/tmp/example.txt`). [See the documentation](https://pipedream.com/docs/workflows/steps/code/nodejs/working-with-files/#the-tmp-directory).",
+ description: "Provide either a file URL or a path to a file in the `/tmp` directory (for example, `/tmp/example.txt`).",
components/elevenlabs/actions/add-voice/add-voice.mjs (1)

21-21: Minor typos in description

"a n array""an array", "myFlie""myFile".

components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (1)

18-22: Fix typos and unify wording with platform convention

  1. "myFlie""myFile".
  2. Drop leading article for consistency ("Provide either a file URL or a path …").
components/zoho_workdrive/actions/upload-file/upload-file.mjs (1)

50-53: Correct typo in prop description

"myFlie.pdf""myFile.pdf".

components/syncmate_by_assitro/actions/send-message/send-message.mjs (2)

26-27: Typo in prop description

myFlie.pdfmyFile.pdf.

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).",

45-47: Avoid reading the entire media file into memory

streamToBuffer loads the whole file, which can be several MBs+. Streaming to base64 on-the-fly (e.g. with pipeline() and base64-stream) keeps memory usage flat.

components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs (2)

38-39: Typo in prop description

Same myFlie.pdf typo as in the single-message action.


63-67: Per-message media is fully buffered

As with the single-message action, each attachment is read entirely into RAM.
For bulk sends this can multiply memory consumption. Streaming (or at least piping through tmp files) would scale better.

components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)

44-48: Extraneous space before .append

data .append is valid JS but unconventional and may fail linting rules.

-      data .append("file", stream, {
+      data.append("file", stream, {
components/wordpress_org/actions/upload-media/upload-media.mjs (1)

14-17: Minor typo

myFlie.pdfmyFile.pdf.

components/dropbox/actions/upload-file/upload-file.mjs (2)

28-32: Typo in prop description

Fix myFlie.pdf.


73-88: Large file upload uses in-memory buffering inside SDK

The Dropbox SDK buffers the entire file before sending when given a stream.
For files over 150 MB use filesUploadSession instead, or detect size and warn users.

components/what_are_those/actions/identify-sneakers-from-photo/identify-sneakers-from-photo.mjs (2)

16-16: Fix typo and use a more realistic example in the prop description

/tmp/myFlie.pdf contains a typo (myFlie) and references a PDF, which is unlikely for a sneaker-image workflow. A JPEG/PNG example is clearer to users.

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/image.jpg).",

22-28: Guard against missing metadata fields

metadata.size or metadata.contentType may be undefined for certain remote URLs, and passing undefined to form-data can trigger header errors. Add a fallback to omit the field when unavailable.

-    data.append("image1", stream, {
-      contentType: metadata.contentType,
-      knownLength: metadata.size,
-      filename: metadata.name,
-    });
+    const opts = { filename: metadata?.name };
+    if (metadata?.contentType) opts.contentType = metadata.contentType;
+    if (metadata?.size)        opts.knownLength = metadata.size;
+    data.append("image1", stream, opts);
components/testmonitor/actions/create-test-result/create-test-result.mjs (1)

96-104: Handle absent metadata gracefully

As with other components, contentType and size can be absent. Consider the same defensive pattern to avoid runtime errors when uploading attachments.

components/youtube_data_api/actions/upload-video/upload-video.mjs (1)

25-29: Update example to match expected media type

A PDF example is misleading for a video upload action.

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/video.mp4).",
components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs (2)

25-29: Clarify example file name and fix typo

Use an audio extension and fix the myFlie typo.

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/voice.ogg).",

47-54: Defensive option construction for form-data

Same concern as other components—avoid passing undefined values:

-    formData.append("file", stream, {
-      contentType: metadata.contentType,
-      knownLength: metadata.size,
-      filename: metadata.name,
-    });
+    const opts = { filename: metadata?.name };
+    if (metadata?.contentType) opts.contentType = metadata.contentType;
+    if (metadata?.size)        opts.knownLength = metadata.size;
+    formData.append("file", stream, opts);
components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs (1)

24-28: Replace PDF example with an image example

Thumbnails are images; replace the PDF example and fix the typo.

-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/thumbnail.png).",
components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (1)

40-48: Null-safe guard for optional metadata

metadata.contentType (and the other keys) can be undefined for some URLs. Consider defaulting or omitting these fields to avoid invalid headers:

-data.append("user_audio_file", stream, {
-  contentType: metadata.contentType,
-  knownLength: metadata.size,
-  filename: metadata.name,
-});
+data.append("user_audio_file", stream, {
+  ...(metadata.contentType && { contentType: metadata.contentType }),
+  ...(metadata.size && { knownLength: metadata.size }),
+  filename: metadata.name ?? "audio",
+});
components/microsoft_outlook/microsoft_outlook.app.mjs (3)

58-60: Typo in prop description

/tmp/myFlie.pdf/tmp/myFile.pdf.


256-267: streamToBase64 loads the entire file into memory

For large attachments this can exceed the 6 MB memory limit imposed by Outlook and quickly blow up Lambda memory. Stream-encode in chunks or enforce a size guard before reading the whole stream.


298-306: Parallelise attachment processing for better throughput

for … await processes attachments sequentially. For many small files you can reduce latency with Promise.all:

-const attachments = [];
-for (let i = 0; self.files && i < self.files.length; i++) {
-  const stream = await getFileStream(self.files[i]);
-  const base64 = await this.streamToBase64(stream);
-  attachments.push({
+const attachments = await Promise.all((self.files ?? []).map(async (file) => {
+  const stream = await getFileStream(file);
+  const base64 = await this.streamToBase64(stream);
+  return {
     "@odata.type": "#microsoft.graph.fileAttachment",
-    "name": path.basename(self.files[i]),
-    "contentType": mime.lookup(self.files[i]),
-    "contentBytes": base64,
-  });
-}
+    name: path.basename(file),
+    contentType: mime.lookup(file) || "application/octet-stream",
+    contentBytes: base64,
+  };
+}));
components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs (2)

28-29: Minor typo

myFlie.pdfmyFile.pdf.


82-89: Index handling can be simplified

Using the loop index makes the intent clearer and avoids manually incrementing i.

-for (const file of files) {
-  const contents = await getFileStream(file);
-  fileInfo.push({
-    contents,
-    path: `${normalizedPath}${filenames[i]}`,
-  });
-  i++;
-}
+for (let idx = 0; idx < files.length; idx++) {
+  const contents = await getFileStream(files[idx]);
+  fileInfo.push({
+    contents,
+    path: `${normalizedPath}${filenames[idx]}`,
+  });
+}
components/api4ai/api4ai.app.mjs (3)

13-13: Typo and misleading example in prop description

myFlie.pdf is misspelled and a PDF example is confusing for an image prop.

- description: "Input image. Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+ description: "Input image. Provide either a file URL or a path to a file in the `/tmp` directory (for example, `/tmp/myFile.jpg`).",

17-25: Duplicate helper – consider consolidating streamToBuffer

streamToBuffer now appears in multiple components. Extracting it into a shared utility (e.g. @pipedream/platform or a local helper module) will reduce repetition and maintenance overhead.


47-47: Spelling

PerfromPerform.

components/the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs (2)

70-70: Prop description typo

myFlie.pdfmyFile.pdf.


74-82: Helper duplication

streamToBuffer is identical to the one added in other files. Moving this helper to a shared module will DRY up the codebase.

components/what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs (1)

16-42: Multiple typos in prop descriptions

Examples:

  • “front image image
  • “URLto” (missing space)
  • “right image image
  • “sizeTag image image

Please review and clean up the repeated words/spaces to maintain a professional UI.

components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2)

31-32: Typo in example path

myFlie.pdfmyFile.pdf.


42-42: Style nit – stray space

There’s an extra space before .append, which breaks the usual formatting:

-    data .append("file", stream, {
+    data.append("file", stream, {
components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)

92-92: Spelling: “attachment”

attachementattachment in the summary string.

components/trello/actions/create-card/create-card.mjs (1)

3-3: Missing import ordering consistency

Project files typically place external imports first, then internal (../../common/constants.mjs). Keep ordering consistent.

components/timetonic/actions/common/create-update-row.mjs (1)

74-74: Minor typo in user-facing description

myFlie.pdfmyFile.pdf.

-Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).
+Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 91e6abc and 945eba1.

⛔ Files ignored due to path filters (2)
  • components/testmonitor/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (91)
  • components/api4ai/actions/alcohol-label-recognition/alcohol-label-recognition.mjs (1 hunks)
  • components/api4ai/actions/background-removal/background-removal.mjs (1 hunks)
  • components/api4ai/actions/brand-recognition/brand-recognition.mjs (1 hunks)
  • components/api4ai/actions/car-image-background-removal/car-image-background-removal.mjs (1 hunks)
  • components/api4ai/actions/furniture-and-household-item-recognition/furniture-and-household-item-recognition.mjs (1 hunks)
  • components/api4ai/actions/image-anonymization/image-anonymization.mjs (1 hunks)
  • components/api4ai/actions/nsfw-image-recognition/nsfw-image-recognition.mjs (1 hunks)
  • components/api4ai/api4ai.app.mjs (2 hunks)
  • components/api4ai/package.json (2 hunks)
  • components/dropbox/actions/upload-file/upload-file.mjs (4 hunks)
  • components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs (4 hunks)
  • components/dropbox/package.json (2 hunks)
  • components/elevenlabs/actions/add-voice/add-voice.mjs (3 hunks)
  • components/elevenlabs/package.json (2 hunks)
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2 hunks)
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2 hunks)
  • components/jira/package.json (2 hunks)
  • components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1 hunks)
  • components/microsoft_outlook/actions/create-contact/create-contact.mjs (1 hunks)
  • components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/download-attachment/download-attachment.mjs (1 hunks)
  • components/microsoft_outlook/actions/find-contacts/find-contacts.mjs (1 hunks)
  • components/microsoft_outlook/actions/find-email/find-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-contacts/list-contacts.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-folders/list-folders.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-labels/list-labels.mjs (1 hunks)
  • components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1 hunks)
  • components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (2 hunks)
  • components/microsoft_outlook/actions/send-email/send-email.mjs (2 hunks)
  • components/microsoft_outlook/actions/update-contact/update-contact.mjs (1 hunks)
  • components/microsoft_outlook/microsoft_outlook.app.mjs (4 hunks)
  • components/microsoft_outlook/package.json (2 hunks)
  • components/microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs (1 hunks)
  • components/microsoft_outlook/sources/new-contact/new-contact.mjs (1 hunks)
  • components/microsoft_outlook/sources/new-email/new-email.mjs (1 hunks)
  • components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs (2 hunks)
  • components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (2 hunks)
  • components/speechace/package.json (2 hunks)
  • components/speechace/speechace.app.mjs (1 hunks)
  • components/spotlightr/actions/create-video/create-video.mjs (2 hunks)
  • components/spotlightr/package.json (2 hunks)
  • components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (3 hunks)
  • components/supabase/package.json (2 hunks)
  • components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs (3 hunks)
  • components/syncmate_by_assitro/actions/send-message/send-message.mjs (3 hunks)
  • components/syncmate_by_assitro/common/utils.mjs (1 hunks)
  • components/syncmate_by_assitro/package.json (2 hunks)
  • components/testmonitor/actions/create-test-result/create-test-result.mjs (3 hunks)
  • components/testmonitor/package.json (2 hunks)
  • components/the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs (2 hunks)
  • components/the_bookie/package.json (2 hunks)
  • components/timetonic/actions/common/create-update-row.mjs (3 hunks)
  • components/timetonic/actions/create-row/create-row.mjs (1 hunks)
  • components/timetonic/actions/update-row/update-row.mjs (1 hunks)
  • components/timetonic/package.json (2 hunks)
  • components/transifex/actions/download-file/download-file.mjs (1 hunks)
  • components/transifex/actions/upload-file/upload-file.mjs (3 hunks)
  • components/transifex/package.json (2 hunks)
  • components/transifex/sources/new-localization-activity-completed-instant/new-localization-activity-completed-instant.mjs (1 hunks)
  • components/transifex/sources/new-task-for-set-of-strings-instant/new-task-for-set-of-strings-instant.mjs (1 hunks)
  • components/transifex/transifex.app.mjs (1 hunks)
  • components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (3 hunks)
  • components/trello/actions/create-card/create-card.mjs (3 hunks)
  • components/trello/package.json (2 hunks)
  • components/trust/actions/upload-video/upload-video.mjs (3 hunks)
  • components/trust/package.json (2 hunks)
  • components/twitter/actions/upload-media/upload-media.ts (3 hunks)
  • components/twitter/package.json (2 hunks)
  • components/twitter/twitter.app.mjs (0 hunks)
  • components/vapi/actions/upload-file/upload-file.mjs (2 hunks)
  • components/vapi/package.json (2 hunks)
  • components/what_are_those/actions/find-sneakers-by-sku/find-sneakers-by-sku.mjs (1 hunks)
  • components/what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs (3 hunks)
  • components/what_are_those/actions/identify-sneakers-from-photo/identify-sneakers-from-photo.mjs (1 hunks)
  • components/what_are_those/common/utils.mjs (1 hunks)
  • components/what_are_those/package.json (2 hunks)
  • components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs (3 hunks)
  • components/whatsapp_business/package.json (2 hunks)
  • components/wordpress_org/actions/upload-media/upload-media.mjs (2 hunks)
  • components/wordpress_org/package.json (2 hunks)
  • components/youtube_data_api/actions/upload-channel-banner/common.mjs (1 hunks)
  • components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-thumbnail/common.mjs (1 hunks)
  • components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-video/common.mjs (1 hunks)
  • components/youtube_data_api/actions/upload-video/upload-video.mjs (2 hunks)
  • components/youtube_data_api/package.json (2 hunks)
  • components/zoho_workdrive/actions/upload-file/upload-file.mjs (2 hunks)
  • components/zoho_workdrive/package.json (2 hunks)
💤 Files with no reviewable changes (1)
  • components/twitter/twitter.app.mjs
🔇 Additional comments (73)
components/speechace/package.json (2)

3-3: Bump package version to 0.1.1
Version increment follows the PR’s release process to denote the updated file‐stream improvements.


16-16: Update @pipedream/platform dependency to ^3.1.0
Aligns this component with the new platform utilities (getFileStream, getFileStreamAndMetadata, etc.) introduced across the PR.

components/trello/package.json (2)

3-3: Bump package version for new release

The version has been correctly incremented to 0.4.2 to reflect the updated file‐stream handling improvements. Ensure this aligns with your changelog and release notes.


13-13: Upgrade platform dependency to include new file‐stream utilities

Updating @pipedream/platform to ^3.1.0 brings in the getFileStream and getFileStreamAndMetadata methods required by this PR. Confirm compatibility with your other components and run the full test suite to catch any downstream issues.

components/transifex/sources/new-task-for-set-of-strings-instant/new-task-for-set-of-strings-instant.mjs (1)

9-9: Confirm version bump consistency.
This non-functional update increments the component version to "0.0.2". Verify that it aligns with the overall release plan and matches version updates in related components.

components/syncmate_by_assitro/package.json (1)

16-16: Verify compatibility with @pipedream/platform v3.1.0.
The dependency on @pipedream/platform was bumped from ^3.0.3 to ^3.1.0. Double-check the platform’s changelog for any breaking changes or new required prop validations and run your component’s integration tests against this new version.

components/transifex/sources/new-localization-activity-completed-instant/new-localization-activity-completed-instant.mjs (1)

9-9: Approve version bump.
The component version has been correctly updated to 0.0.2 to align with the coordinated release across components.

components/jira/package.json (1)

13-13: Upgrade @pipedream/platform to ^3.1.0
Confirm that v3.1.0 of @pipedream/platform provides the new getFileStream and getFileStreamAndMetadata utilities and introduces no breaking changes for this component.

components/elevenlabs/package.json (2)

3-3: Patch version bump to 0.4.1 approved. Aligns with semantic versioning for a patch release.


16-16: Upgrade @pipedream/platform to ^3.1.0 approved. Matches the broader platform dependency standardization for the new file-stream utilities.

components/the_bookie/package.json (2)

3-3: Patch version bump is appropriate
Version increment from 0.1.0 to 0.1.1 correctly reflects a non-breaking update in line with semantic versioning.


16-16: Dependency on @pipedream/platform updated
Bumping the dependency to ^3.1.0 aligns with the newly adopted streaming utilities (getFileStream, getFileStreamAndMetadata) across components.

components/whatsapp_business/package.json (1)

16-16: Check compatibility for major platform dependency upgrade
The dependency @pipedream/platform has been raised from ^1.x to ^3.1.0, which may introduce breaking changes. Verify that all existing imports and utilities (e.g., getFileStream, getFileStreamAndMetadata) work correctly under the new version and run integration tests to confirm no regressions.

components/spotlightr/package.json (1)

16-16:

❓ Verification inconclusive

Upgrade @pipedream/platform: validate compatibility.

You've bumped the dependency to ^3.1.0, which includes new file‐stream utilities. Verify that this component has been updated to call the new getFileStream/getFileStreamAndMetadata APIs and that no existing behavior is broken.


🏁 Script executed:

#!/bin/bash
# Verify usage of new platform APIs and run tests
rg -n "getFileStream" -g "components/spotlightr/**/*"
npm install
npm test

Length of output: 3830


Validate new file-stream API usage and restore test suite

We’ve bumped @pipedream/platform to ^3.1.0, which adds new file‐stream utilities. Our quick grep shows:

  • components/spotlightr/actions/create-video/create-video.mjs imports and uses getFileStreamAndMetadata
  • No occurrences of getFileStream found

However, tests are currently failing with a missing ts-jest preset and dependency conflicts. Please:

  • Confirm whether you need to call getFileStream anywhere else, or if getFileStreamAndMetadata alone suffices
  • Fix the Jest configuration/dependencies (e.g., add the correct ts-jest preset or resolve peers with --legacy-peer-deps)
  • Re-run the full test suite to ensure no regressions
components/transifex/package.json (1)

16-16:

❓ Verification inconclusive

Verify compatibility of @pipedream/platform ^3.1.0.
A major version bump can introduce breaking API changes. Ensure all platform utilities used by this component work with v3.x.

Run the following to confirm the version exists and flag if missing:


🏁 Script executed:

#!/bin/bash
# Skip cloning: checks external npm registry only
npm view @pipedream/platform versions --json | jq 'index("3.1.0")'

Length of output: 71


Confirm @pipedream/platform v3.1.0 availability and compatibility.
npm registry shows that @pipedream/[email protected] is published. Please verify that all platform utilities used by this component (e.g., HTTP helpers, auth/event sources, etc.) are compatible with v3.x. Consult the v3.x migration guide and run the component’s tests to ensure nothing is broken.

components/trust/package.json (1)

16-16:

❓ Verification inconclusive

Confirm dependency upgrade covers required utilities
Verify that @pipedream/platform@^3.1.0 indeed exports getFileStream, getFileStreamAndMetadata, and any other helpers this component now relies on.


🏁 Script executed:

# Check available exports in @pipedream/[email protected]
npm view @pipedream/[email protected] dist --json | jq '.exports | keys'

Length of output: 912


To inspect the package’s entry points and exports directly, let’s pull its full package.json metadata:


🏁 Script executed:

# Retrieve exports, main entry, and types definitions for @pipedream/[email protected]
npm view @pipedream/[email protected] package.json --json | jq '{exports, main, types}'

Length of output: 876


Confirm exports in @pipedream/platform@^3.1.0
I attempted to pull the package metadata via npm view, but no export definitions were returned. Please manually verify that version 3.1.0 of @pipedream/platform exports all required utilities, including:

  • getFileStream
  • getFileStreamAndMetadata
  • any other helpers your component relies on

You can inspect the distributed files yourself, for example:

npm pack @pipedream/[email protected]
tar -tzf pipedream-platform-3.1.0.tgz | grep -E 'index\.js|dist/'
components/supabase/package.json (2)

3-3: Version bump looks correct

Patch‐level increment from 0.3.00.3.1 matches an internal, non-breaking refactor. No further action needed.


16-16: Verify platform-library compatibility

Upgrading @pipedream/platform from ^3.0.3 to ^3.1.0 is necessary for getFileStream* helpers, but make sure:

  1. All other sub-packages under components/ that import @pipedream/platform have also been bumped, otherwise you can hit mixed lockfile resolution.
  2. If a lock-file exists, run a fresh install to capture the new semver range.

No code change required, just double-check before publishing.

components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (2)

3-4: Good call switching to getFileStream

Importing the new helper removes the need for fs/readFileSync, making the action work with both URLs and local /tmp files.


9-9: Component version bump acknowledged

The internal refactor warrants 0.0.2; consistent with semver.

components/trust/actions/upload-video/upload-video.mjs (1)

42-50: Fallbacks for missing metadata fields

getFileStreamAndMetadata() may not always be able to determine contentType, size, or even name (e.g. some presigned URLs).
form-data will happily accept undefined, but downstream APIs frequently reject such multipart parts.

-    data.append("file", stream, {
-      contentType: metadata.contentType,
-      knownLength: metadata.size,
-      filename: metadata.name,
-    });
+    data.append("file", stream, {
+      contentType: metadata.contentType || "application/octet-stream",
+      knownLength: metadata.size ?? undefined,
+      filename: metadata.name ?? "upload",
+    });

Please verify the Trust endpoint behaves correctly when one or more of those values are missing.

components/microsoft_outlook/actions/list-labels/list-labels.mjs (1)

7-7: Version bump looks good

No functional changes detected; patch version increment is appropriate.

components/microsoft_outlook/actions/list-folders/list-folders.mjs (1)

7-7: Version bump looks good

No functional changes detected; patch version increment is appropriate.

components/what_are_those/package.json (2)

3-3: Approve: version bump to 0.1.1.
The patch version increment aligns with the platform utility updates and signals a non-breaking release.


16-16: Approve: dependency upgrade to ^3.1.0.
Updating @pipedream/platform ensures availability of getFileStream and related utilities used in this component.

components/youtube_data_api/package.json (2)

3-3: Approve: version bump to 0.6.3.
Patch version updated to reflect the unified file-handling refactor across actions.


14-14: Approve: dependency upgrade to ^3.1.0.
Aligns with other components to leverage the latest platform file-stream utilities.

components/microsoft_outlook/package.json (2)

3-3: Approve: version bump to 1.5.1.
Incremented to reflect the new async streaming and attachment handling enhancements.


15-15: Approve: dependency upgrade to ^3.1.0.
Ensures the component uses the updated platform SDK that provides getFileStream and other helpers.

components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1)

7-7: Approve: action version bump to 0.0.5.
Matches the coordinated release update across Microsoft Outlook actions; no functional changes introduced.

components/microsoft_outlook/actions/create-contact/create-contact.mjs (1)

6-6: Approve: action version bump to 0.0.14.
Aligned with the broader versioning scheme for Microsoft Outlook actions; no logic changes.

components/microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs (1)

8-8: Approve version bump
Version updated to 0.0.2 to align with the coordinated Microsoft Outlook component release.

components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1)

7-7: Approve version bump
Version incremented to 0.0.5 as part of the global component update.

components/testmonitor/package.json (2)

3-3: Approve package version bump
Bumped testmonitor package to 0.1.1 in line with PR objectives.


13-13: Approve dependency update
Updated @pipedream/platform to ^3.1.0 to support new file streaming utilities.

components/microsoft_outlook/sources/new-contact/new-contact.mjs (1)

8-8: Approve version bump
Updated version to 0.0.15 as part of the coordinated Outlook component release.

components/wordpress_org/package.json (2)

3-3: Approve package version bump
Bumped Wordpress.org component to 0.4.1.


13-13: Approve dependency update
Added @pipedream/platform ^3.1.0 to enable unified file streaming and metadata handling.

components/microsoft_outlook/actions/find-email/find-email.mjs (1)

7-7: Bump action version to 0.0.5
Updating only the version metadata to align with the PR’s standard versioning.

components/transifex/actions/download-file/download-file.mjs (1)

8-8: Bump action version to 0.0.2
This is a metadata-only change with no impact on logic.

components/vapi/package.json (2)

3-3: Bump package version to 0.1.1
Version increment to match the updated components and dependencies in this PR.


16-16: Update @pipedream/platform dependency to ^3.1.0
Aligns with the platform-wide upgrade enabling getFileStream utilities.

components/twitter/package.json (2)

3-3: Bump package version to 2.3.1
Minor version bump reflecting coordinated updates across Twitter components.


19-19: Update @pipedream/platform dependency to ^3.1.0
Upgrades platform SDK to leverage unified file stream utilities.

components/api4ai/package.json (2)

3-3: Bump package version to 0.1.1
Incrementing the package version to reflect the recent refactors.


30-30: Update @pipedream/platform dependency to ^3.1.0
Standardizing platform dependency across components for file-stream utilities.

components/microsoft_outlook/actions/find-contacts/find-contacts.mjs (1)

6-6: Bump action version
The version increment from “0.0.13” to “0.0.14” is correct and aligns with the coordinated patch-level release for Microsoft Outlook actions.

components/zoho_workdrive/package.json (1)

3-3: Update package version and platform dependency
Version bumped to 0.2.3 and @pipedream/platform locked to ^3.1.0 to support the new file-stream utilities.

Also applies to: 16-16

components/api4ai/actions/brand-recognition/brand-recognition.mjs (1)

8-8: Bump action version
Updating the version from “0.0.1” to “0.0.2” is consistent with the synchronized API4AI action release.

components/dropbox/package.json (1)

3-3: Update package version and platform dependency
Version upgraded to 0.4.2 and @pipedream/platform set to ^3.1.0 to enable the new file-streaming helpers.

Also applies to: 13-13

components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1)

7-7: Bump action version
Version updated from “0.0.6” to “0.0.7” in line with the Microsoft Outlook component’s coordinated release.

components/api4ai/actions/background-removal/background-removal.mjs (1)

11-11: Bump version to 0.0.2
Consistent with coordinated version updates across API4AI actions; no functional changes introduced.

components/microsoft_outlook/actions/update-contact/update-contact.mjs (1)

6-6: Bump version to 0.0.14
Aligned with other Microsoft Outlook actions in this release; behavior remains unchanged.

components/microsoft_outlook/actions/list-contacts/list-contacts.mjs (1)

6-6: Bump version to 0.0.14
Consistent version management across Outlook actions; no logic modifications.

components/microsoft_outlook/sources/new-email/new-email.mjs (1)

10-10: Bump version to 0.0.18
Version increment matches coordinated Outlook component updates; no functional changes.

components/api4ai/actions/furniture-and-household-item-recognition/furniture-and-household-item-recognition.mjs (1)

8-8: Bump version to 0.0.2
This version update aligns with other API4AI actions; functionality remains unchanged.

components/api4ai/actions/image-anonymization/image-anonymization.mjs (1)

10-10: Approve version bump for Image Anonymization
Updating the version to "0.0.2" is consistent with the coordinated release across API4AI actions.

components/api4ai/actions/alcohol-label-recognition/alcohol-label-recognition.mjs (1)

8-8: Approve version bump for Alcohol Label Recognition
Version changed to "0.0.2" in line with the bulk update across API4AI components.

components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (1)

8-8: Approve version bump for Add Label to Email
Incrementing the action version to "0.0.7" matches the coordinated version alignment within Microsoft Outlook integration.

components/api4ai/actions/nsfw-image-recognition/nsfw-image-recognition.mjs (1)

9-9: Approve version bump for NSFW Image Recognition
Version updated to "0.0.2" in sync with other API4AI action components.

components/api4ai/actions/car-image-background-removal/car-image-background-removal.mjs (1)

11-12: Version bump only – no concerns

Patch-level version increment looks fine and keeps semver semantics intact.

components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (1)

68-72: Good catch – now correctly awaits async body preparation

Awaiting prepareMessageBody prevents the earlier race condition. Looks correct.

components/microsoft_outlook/actions/send-email/send-email.mjs (1)

66-67: Awaiting the async prepareMessageBody is the right fix

Changing the spread to ...await guarantees the message body is fully built before it is handed off to sendEmail. Looks good and removes a latent race.

components/youtube_data_api/actions/upload-video/common.mjs (1)

15-26:

❌ Incorrect review comment

insertVideo parameter may be wrong (content vs media.body)

Every other YouTube helper here (thumbnail/banner) passes the stream under media: { body }. Switching to content: body risks a 400 from the API unless the wrapper explicitly aliases it.

-      content: body,
+      media: {
+        body,
+      },

Please verify the expected shape; grep other calls to insertVideo to confirm.


🏁 Script executed:

#!/bin/bash
# Inspect how insertVideo is called elsewhere to confirm the parameter shape
rg -A3 -B2 'insertVideo\('

Length of output: 936


🏁 Script executed:

#!/bin/bash
# Show insertVideo implementation to verify expected options shape
rg -A20 -B5 'async insertVideo' components/youtube_data_api/common-app.mjs

Length of output: 769


🏁 Script executed:

#!/bin/bash
# Show how youtube.videos.insert is invoked including media or content usage
rg -A20 -B5 'youtube.videos.insert' components/youtube_data_api/common-app.mjs

Length of output: 661


No change needed for insertVideo parameter

The insertVideo helper expects a top-level content option and internally maps it to media.body. Your current call

await this.youtubeDataApi.insertVideo({,
  content: body,
});

correctly passes the stream – no rewrite to media: { body } is required.

Likely an incorrect or invalid review comment.

components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs (1)

54-57: Upper-bound messagesNumber to prevent accidental abuse

A value like 10 000 will loop synchronously and may hit rate limits or exhaust memory.
Consider validating messagesNumber (e.g. >=1 && <=100).

components/wordpress_org/actions/upload-media/upload-media.mjs (1)

42-43: Consider streaming base64 only when required

WordPress will happily accept raw binary streams; converting to base64 is unnecessary here and would inflate payload size. Confirm that createMedia expects the raw stream; if so, pass it directly.

components/what_are_those/actions/find-sneakers-by-sku/find-sneakers-by-sku.mjs (1)

1-23: Looks good

Uses shared streamToBuffer, correctly handles stream ➜ base64 conversion, and adopts the new getFileStream API. No issues spotted.

components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)

73-90: Handle absent/invalid metadata gracefully

getFileStreamAndMetadata() may return undefined fields (e.g. content-type). Pass fallback values or strip the keys to prevent Trello rejecting the upload.

-form.append("file", stream, {
-  contentType: metadata.contentType,
-  knownLength: metadata.size,
-  filename: metadata.name,
-});
+form.append("file", stream, {
+  contentType: metadata.contentType || "application/octet-stream",
+  knownLength: metadata.size,
+  filename: metadata.name || "file",
+});
components/timetonic/actions/create-row/create-row.mjs (1)

8-8: Version bump looks correct

Only the version field was updated; no further action required.

components/timetonic/actions/update-row/update-row.mjs (1)

8-8: Version bump looks correct

Consistent with the companion action.

components/timetonic/package.json (2)

3-3: Package version bump is fine

0.1.1 accurately reflects the internal action version increases.


16-16:

❓ Verification inconclusive

Ensure full compatibility with @pipedream/platform@^3.1.0

Jumping from ^1.6.5 to ^3.1.0 is a major-version leap. Double-check that no other Timetonic files import APIs that were removed or renamed in @pipedream/platform v3.

Run this quick scan to spot any deprecated imports/usages:


🏁 Script executed:

#!/bin/bash
# List all @pipedream/platform imports and show 5 lines of context
rg -A3 -B1 '@pipedream/platform' components/timetonic

Length of output: 1404


Verify @pipedream/platform v3.1.0 API usage

I ran a scan of all @pipedream/platform imports in components/timetonic—nothing obvious was removed, but this major jump may rename or relocate some APIs. Please confirm that each of these remains exported in v3.1.0 (and update them if not):

• components/timetonic/timetonic.app.mjs
import { axios } from "@pipedream/platform"
• components/timetonic/actions/common/create-update-row.mjs
import { getFileStreamAndMetadata } from "@pipedream/platform"
• components/timetonic/sources/common/base.mjs
import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"

If any API has moved or been renamed in v3, please adjust these imports accordingly before merging.

components/timetonic/actions/common/create-update-row.mjs (1)

4-4: Import requires the new platform version

getFileStreamAndMetadata only exists ≥ 3.x, so the preceding dependency bump is mandatory. Make sure CI installs the updated package; otherwise this file will fail at runtime.

Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@michelle0927 I commented on a few instances where:

  • components where a prop is removed, and/or a required prop is added, need a major version bump (e.g. 1.0.0) since they can break existing user workflows
  • I think it's better to keep existing prop names (e.g. filePath instead of changing them to file), updating only the label and description. This way existing user input gets preserved. (I did not comment this on the entire PR, only a few cases; feel free to do it for all changed props if you agree)

@GTFalcao GTFalcao moved this from Ready for PR Review to Changes Required in Component (Source and Action) Backlog Jun 16, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
components/youtube_data_api/actions/upload-video/upload-video.mjs (1)

25-29: Same naming/typo issue as banner upload

To stay consistent with the banner action (and the wider refactor), either rename filePathfile or explicitly state that filePath now accepts URLs too.
Also fix “myFlie” → “myFile”.

-    filePath: {
+    file: {
@@
-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (e.g., /tmp/myFile.pdf).",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7ccedf7 and 1620d7a.

📒 Files selected for processing (18)
  • components/dropbox/actions/upload-file/upload-file.mjs (3 hunks)
  • components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs (4 hunks)
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2 hunks)
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2 hunks)
  • components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs (2 hunks)
  • components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (2 hunks)
  • components/spotlightr/actions/create-video/create-video.mjs (2 hunks)
  • components/syncmate_by_assitro/actions/send-message/send-message.mjs (3 hunks)
  • components/twitter/actions/upload-media/upload-media.ts (3 hunks)
  • components/vapi/actions/upload-file/upload-file.mjs (1 hunks)
  • components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs (3 hunks)
  • components/wordpress_org/actions/upload-media/upload-media.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-channel-banner/common.mjs (1 hunks)
  • components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-thumbnail/common.mjs (1 hunks)
  • components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-video/common.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-video/upload-video.mjs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (16)
  • components/youtube_data_api/actions/upload-channel-banner/common.mjs
  • components/youtube_data_api/actions/upload-video/common.mjs
  • components/vapi/actions/upload-file/upload-file.mjs
  • components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs
  • components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs
  • components/youtube_data_api/actions/upload-thumbnail/common.mjs
  • components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs
  • components/dropbox/actions/upload-file/upload-file.mjs
  • components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs
  • components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs
  • components/syncmate_by_assitro/actions/send-message/send-message.mjs
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
  • components/wordpress_org/actions/upload-media/upload-media.mjs
  • components/twitter/actions/upload-media/upload-media.ts
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
  • components/spotlightr/actions/create-video/create-video.mjs
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
  • GitHub Check: pnpm publish
🔇 Additional comments (2)
components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (1)

18-22: Property key still reads “filePath” → consider renaming + typo fix

The UI label/description now advertise a generic “File” input that may be a URL or a path, yet the prop key remains filePath.
Keeping the old name is slightly misleading and diverges from the rest of the PR narrative (“single file property”), and the example path contains a typo (myFlie).

-    filePath: {
+    file: {
@@
-      description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide either a file URL or a path to a file in the /tmp directory (e.g., /tmp/myFile.pdf).",

If you keep the old key for backward-compat, please add a deprecation note in the description.

Likely an incorrect or invalid review comment.

components/youtube_data_api/actions/upload-video/upload-video.mjs (1)

25-29: Verify internal references after rename

If you apply the rename above, make sure every this.filePath or props.filePath usage inside the action (or common helper) is updated to file, otherwise the stream retrieval will break.

#!/bin/bash
# Find lingering references to `filePath` in the two YouTube upload actions
rg -n --context 2 $'filePath' components/youtube_data_api/actions/upload-channel-banner components/youtube_data_api/actions/upload-video

@michelle0927 michelle0927 moved this from Changes Required to Ready for PR Review in Component (Source and Action) Backlog Jun 16, 2025
lcaresia
lcaresia previously approved these changes Jun 16, 2025
@lcaresia lcaresia moved this from Ready for PR Review to Ready for QA in Component (Source and Action) Backlog Jun 16, 2025
@michelle0927 michelle0927 moved this from Ready for QA to Doing in Component (Source and Action) Backlog Jun 16, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
components/youtube_data_api/package.json (1)

3-3: Confirm major version bump to 1.0.0
This upgrade denotes a breaking release—please document all breaking changes in your CHANGELOG or release notes and notify downstream consumers.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1620d7a and 2e500dc.

📒 Files selected for processing (26)
  • components/dropbox/actions/upload-file/upload-file.mjs (3 hunks)
  • components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs (4 hunks)
  • components/dropbox/package.json (2 hunks)
  • components/elevenlabs/actions/add-voice/add-voice.mjs (3 hunks)
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2 hunks)
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2 hunks)
  • components/microsoft_outlook/microsoft_outlook.app.mjs (4 hunks)
  • components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs (2 hunks)
  • components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (2 hunks)
  • components/speechace/speechace.app.mjs (1 hunks)
  • components/spotlightr/actions/create-video/create-video.mjs (2 hunks)
  • components/spotlightr/package.json (2 hunks)
  • components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (3 hunks)
  • components/transifex/transifex.app.mjs (1 hunks)
  • components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (3 hunks)
  • components/trello/actions/create-card/create-card.mjs (4 hunks)
  • components/trust/actions/upload-video/upload-video.mjs (3 hunks)
  • components/twitter/actions/upload-media/upload-media.ts (3 hunks)
  • components/vapi/actions/upload-file/upload-file.mjs (1 hunks)
  • components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs (3 hunks)
  • components/wordpress_org/actions/upload-media/upload-media.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs (2 hunks)
  • components/youtube_data_api/actions/upload-video/upload-video.mjs (2 hunks)
  • components/youtube_data_api/package.json (2 hunks)
  • components/zoho_workdrive/actions/upload-file/upload-file.mjs (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • components/transifex/transifex.app.mjs
🚧 Files skipped from review as they are similar to previous changes (24)
  • components/speechace/speechace.app.mjs
  • components/spotlightr/package.json
  • components/dropbox/package.json
  • components/elevenlabs/actions/add-voice/add-voice.mjs
  • components/youtube_data_api/actions/upload-video/upload-video.mjs
  • components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs
  • components/dropbox/actions/upload-file/upload-file.mjs
  • components/twitter/actions/upload-media/upload-media.ts
  • components/spotlightr/actions/create-video/create-video.mjs
  • components/zoho_workdrive/actions/upload-file/upload-file.mjs
  • components/trello/actions/create-card/create-card.mjs
  • components/microsoft_outlook/microsoft_outlook.app.mjs
  • components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs
  • components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
  • components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs
  • components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs
  • components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs
  • components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs
  • components/wordpress_org/actions/upload-media/upload-media.mjs
  • components/trust/actions/upload-video/upload-video.mjs
  • components/vapi/actions/upload-file/upload-file.mjs
  • components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: pnpm publish
  • GitHub Check: Lint Code Base
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
🔇 Additional comments (1)
components/youtube_data_api/package.json (1)

14-14: Validate @pipedream/platform dependency upgrade to ^3.1.0
Ensure your component code leverages any new APIs and handles deprecations introduced in v3.1.0. Run full integration and smoke tests to catch regressions.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (3)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)

28-33: files prop still typed as a single string – breaks multi-file input
You’re iterating over this.files later (treating it as an array), but the prop is declared as type: "string". The UI will expose a single text box and the runtime will iterate over the string’s characters, sending one byte per request.

-    files: {
-      type: "string",
+    files: {
+      type: "string[]",
       label: "File Paths or URLs",
-      description: "Provide either an array of file URLs or paths to files in the /tmp directory (for example, /tmp/myFlie.pdf).",
+      description: "Provide an array of file URLs or paths to files in the /tmp directory (e.g., /tmp/myFile.pdf).",
     },
components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)

38-42: Re-introduce path validation to prevent arbitrary-file reads
The file prop accepts any string and getFileStreamAndMetadata is invoked without guarding. A malicious user could supply ../../etc/shadow (or any absolute path) and the worker will happily stream it.

+// Guard against arbitrary file reads
+if (!/^https?:\/\//.test(file) && !file.startsWith("/tmp/")) {
+  throw new Error("Local file paths must be under /tmp");
+}

(The guard should be placed right before calling getFileStreamAndMetadata.)

Also applies to: 73-82

components/trello/actions/create-card/create-card.mjs (1)

114-115: Prop description still references removed fields
The sentence about File Attachment Path / URL / Type is obsolete after the refactor.

Update or remove it to avoid confusing users.

🧹 Nitpick comments (5)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2)

37-39: Sequential upload – consider Promise.all for better throughput
Large attachment batches are streamed one-by-one; Jira accepts parallel uploads. Wrapping the per-file logic in Promise.all(this.files.map(...)) can cut runtime noticeably for N>1 without complicating error handling.


44-44: Accidental space before .append
data .append parses, but it’s unusual and easy to miss in searches/linters.

-      data .append("file", stream, {
+      data.append("file", stream, {
components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (2)

78-82: Fallback when metadata is incomplete
metadata.contentType, metadata.size, or metadata.name can be undefined depending on the source. Provide sensible defaults to avoid request failures.

-form.append("file", stream, {
-  contentType: metadata.contentType,
-  knownLength: metadata.size,
-  filename: metadata.name,
-});
+form.append("file", stream, {
+  contentType: metadata.contentType || "application/octet-stream",
+  knownLength: metadata.size,
+  filename: metadata.name || "file",
+});

92-93: Minor typo in success message
attachementattachment.

-$.export("$summary", `Successfully added attachement to card ${cardId}`);
+$.export("$summary", `Successfully added attachment to card ${cardId}`);
components/trello/actions/create-card/create-card.mjs (1)

247-253: Add metadata fallbacks for robustness
Same remark as in the attachment action: default values avoid runtime errors when metadata fields are missing.

-  form.append("file", stream, {
-    contentType: metadata.contentType,
-    knownLength: metadata.size,
-    filename: metadata.name,
-  });
+  form.append("file", stream, {
+    contentType: metadata.contentType || "application/octet-stream",
+    knownLength: metadata.size,
+    filename: metadata.name || "file",
+  });
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2e500dc and 2ff60f2.

📒 Files selected for processing (6)
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2 hunks)
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2 hunks)
  • components/jira/package.json (2 hunks)
  • components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (3 hunks)
  • components/trello/actions/create-card/create-card.mjs (4 hunks)
  • components/trello/package.json (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • components/trello/package.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • components/jira/package.json
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Lint Code Base
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
🔇 Additional comments (2)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)

50-52: Leaking FormData internals – use getBoundary() instead of _boundary
_boundary is an implementation detail of form-data and may break on upgrades. Prefer the public API:

-        "Content-Type": `multipart/form-data; boundary=${data._boundary}`,
+        "Content-Type": `multipart/form-data; boundary=${data.getBoundary()}`,
components/trello/actions/create-card/create-card.mjs (1)

244-253: 👍 Conditional streaming fix looks good
The new if (file) guard prevents failures in “copy-only” flows.

@michelle0927 michelle0927 moved this from Doing to Ready for PR Review in Component (Source and Action) Backlog Jun 16, 2025
@michelle0927
Copy link
Collaborator Author

Hello everyone, I have tested this PR and there're some test cases failed or needed improvement.

Please check the test report below for more information https://vunguyenhung.notion.site/File-URL-and-Path-Improvements-217bf548bb5e81b5a6cce55e00db3a26

@vunguyenhung For Twitter, make sure you're publishing the .mjs file in /dist instead of the .ts file.

@michelle0927 michelle0927 moved this from Changes Required to Ready for QA in Component (Source and Action) Backlog Jun 19, 2025
@vunguyenhung vunguyenhung moved this from Ready for QA to In QA in Component (Source and Action) Backlog Jun 19, 2025
@vunguyenhung vunguyenhung moved this from In QA to Changes Required in Component (Source and Action) Backlog Jun 20, 2025
@vunguyenhung
Copy link
Collaborator

Hello everyone, I have tested this PR and there're some test cases failed or needed improvement.

Please check the test report below for more information
https://vunguyenhung.notion.site/File-URL-and-Path-Improvements-217bf548bb5e81b5a6cce55e00db3a26

@michelle0927 michelle0927 moved this from Changes Required to Ready for QA in Component (Source and Action) Backlog Jun 20, 2025
@vunguyenhung vunguyenhung moved this from Ready for QA to In QA in Component (Source and Action) Backlog Jun 23, 2025
@vunguyenhung vunguyenhung moved this from In QA to Ready for Release in Component (Source and Action) Backlog Jun 23, 2025
@vunguyenhung
Copy link
Collaborator

Hi everyone, all test cases are passed! Ready for release!

Test report
https://vunguyenhung.notion.site/File-URL-and-Path-Improvements-217bf548bb5e81b5a6cce55e00db3a26

@michelle0927
Copy link
Collaborator Author

/approve

GTFalcao
GTFalcao previously approved these changes Jun 23, 2025
@GTFalcao
Copy link
Collaborator

Should check the lint fail before merging - might be a package that doesn't have its platform version updated to 3.1

@michelle0927
Copy link
Collaborator Author

  • Pull Request Checks / Lint Code Base (pull_request)

@jcortes Can you help explain the Lint Code Base error? It's coming from a change made in this commit. It seems like it's looking for an .mjs file in /dist instead of the .ts file. However, those files don't exist in the repo, correct?

@jcortes
Copy link
Collaborator

jcortes commented Jun 23, 2025

Hi @michelle0927 I was also running into this exact same issue so I decided to put these lines in the gh action here in order for the workflow to have those compiled files from Typescript because we are ignoring them when it comes to Typscript apps

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.github/workflows/pull-request-checks.yaml (1)

99-99: Suggest renaming step for clarity.

Consider renaming the step from "Build TypeScript Components" to "Compile TypeScript Components" (or similar) to better reflect that it invokes the build script and to maintain consistency with other CI step names.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 73b24a1 and b3edc28.

📒 Files selected for processing (1)
  • .github/workflows/pull-request-checks.yaml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (1)
.github/workflows/pull-request-checks.yaml (1)

100-100: ```shell
#!/bin/bash

Check 'outDir' and 'module' in tsconfig files

rg '"outDir"' -n --glob "tsconfig*.json"
rg '"module"' -n --glob "tsconfig*.json"

Locate and inspect the post-build script

tsfile=$(fd tsPostBuild.mjs | head -n 1)
if [ -n "$tsfile" ]; then
echo "---- $tsfile ----"
sed -n '1,200p' "$tsfile"
else
echo "tsPostBuild.mjs not found"
fi


</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@michelle0927
Copy link
Collaborator Author

/approve

@davidcockrum
Copy link

davidcockrum commented Jun 23, 2025 via email

@michelle0927 michelle0927 merged commit a4b09fb into master Jun 24, 2025
11 checks passed
@michelle0927 michelle0927 deleted the file-url-and-path-updates-1 branch June 24, 2025 14:10
@github-project-automation github-project-automation bot moved this from Ready for Release to Done in Component (Source and Action) Backlog Jun 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

7 participants